<?php
abstract class LightConnDriver
{
	/**
	 * Ponteiro de conexão
	 *
	 * @var source
	 */
	protected $conn;
	/**
	 * Query SQL
	 *
	 * @var string
	 */
	public $query;
	/**
	 * Array com parametros para STMT
	 *
	 * @var array
	 */
	public $prepare;
	/**
	 * Resultado da consulta
	 *
	 * @var resultset
	 */
	protected $resultSet;
	/**
	 * Usa porta
	 *
	 * @var bool
	 */
	protected $usePort;
	/**
	 * Usa socket de conexão
	 *
	 * @var bool
	 */
	protected $useSocket;
	
	/**
	 * Nome do banco de dados atual
	 *
	 * @var string
	 */
	protected $database;
	/**
	 * Stmt atual
	 *
	 * @var stmt
	 */
	protected $stmt;
	
	/**
	 * Nova conexão com o banco
	 *
	 * @param string $host
	 * @param string $user
	 * @param string $password
	 * @param string $database
	 * @return bool
	 */
	public abstract function Connect($host, $user, $password, $database = null, $persistente = true);
	
	/**
	 * Inicializa variáveis do driver
	 *
	 */
	public function Setup()
	{
		$this->usePort = true;
		$this->useSocket = true;
	}	
	
	/**
	 * Fechar conexão com o banco de dados
	 *
	 */
	public abstract function Disconnect();
	
	/**
	 * Executa um query SQL
	 *
	 * @param string $sql
	 * @param array $prepare
	 * @return LightConnIterator
	 */
	public abstract function Query($sql, $prepare = null);
	
	/**
	 * Executa um query SQL e retorna numero de linhas afetadas
	 *
	 * @param string $sql
	 * @param array $prepare
	 * @return int
	 */
	public abstract function Execute($sql, $prepare = null);
	
	/**
	 * Tratamento de erros
	 *
	 * @param resultset $message
	 * @param link $source
	 */
	public abstract function Error($message = null, $source = null);
	
	/**
	 * Iniciar transação
	 *
	 * @return bool
	 */
	public abstract function Begin();

	/**
	 * Concluir transação
	 *
	 * @return bool
	 */
	public abstract function Commit();
	
	/**
	 * Cancelar transação
	 *
	 * @return bool
	 */
	public abstract function Rollback();
	
	/**
	 * Importar um arquivo SQL
	 *
	 * @param string $file
	 * @return bool
	 */
	public abstract function Import($file);
	
	/**
	 * Importar sql
	 *
	 * @param string $sql
	 * @return bool
	 */
	public abstract function ImportSQL($sql);
	
	/**
	 * retorna ultimo ID
	 *
	 * @return int
	 */
	public abstract function LastInsertId();
}
?>